# 此处可以扩展更多认证逻辑，例如 JWT、OAuth 等
# 已在 main.py 中通过 session 实现基础拦截
# app/middlewares/auth_middleware.py
from bottle import route, request, redirect

# ========== 全局拦截器（认证检查） ==========
# 白名单列表
white_list = [
    '/login',
    '/logout',
    '/static',  # 示例，可以是任何你希望不进行登录检查的路径
]
# 添加一个全局钩子到Bottle应用中
def apply_global_auth_hook():
    def before_request():
        # 获取当前请求路径
        path = request.path
        
        # 如果路径在白名单中，则跳过登录检查
        if any(path.startswith(white_path) for white_path in white_list):
            return
        
        # 检查用户是否已登录
        session = request.environ.get('beaker.session')
        if not session.get('logged_in'):
            return redirect('/login')

    return before_request